package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default() // 创建一个默认的Gin引擎实例

	// 定义一个路由：访问 /setcookie 时的处理函数
	r.GET("/setcookie", func(c *gin.Context) {
		// 设置名为 mycookie 的cookie，值为 hello_cookie_value，存活时间为3600秒（1小时）
		// 路径为 /，域名为 localhost，secure为 false（非https），HttpOnly为 true（客户端不可访问）
		c.SetCookie("mycookie", "hello_cookie_value", 3600, "/", "localhost", false, true)
		// 返回JSON响应，提示cookie已设置
		c.JSON(http.StatusOK, gin.H{
			"message": "Cookie has been set",
		})
	})

	// 定义一个路由：访问 /getcookie 时的处理函数
	r.GET("/getcookie", func(c *gin.Context) {
		// 尝试读取名为 mycookie 的cookie
		cookie, err := c.Cookie("mycookie")
		if err != nil {
			// 如果没有找到cookie，返回404和错误信息
			c.JSON(http.StatusNotFound, gin.H{
				"error": "Cookie not found",
			})
			return
		}
		// 如果成功读取cookie，返回cookie的值
		c.JSON(http.StatusOK, gin.H{
			"cookie": cookie,
		})
	})

	// 启动HTTP服务器，监听端口8080
	r.Run(":80")
}
